#Dependencias
library(dplyr)
library(plotrix)
library(plotly)Utilizaremos la base de datos de los deportistas de la NBA durante 2018 que contiene información como el equipo al que pertenecen, su posición, de qué universidad provienen, entre otras. Las variables que contiene la base de datos son: * Name: nombre de los jugadores
* Team: equipo al que pertenecen los jugadores
* Number: Número que utiliza cada jugador dentro del equipo
* Position: Posición en la que se desempeñan durante cada partido
* Age: Edad de los jugadores
* Height: Altura de los jugadores
* Weight: Peso de los jugadores
* College: Universidad de donde provienen
* Salary: Sueldo que reciben
datos <- read.csv(url("https://raw.githubusercontent.com/sivabalanb/Data-Analysis-with-Pandas-and-Python/master/nba.csv"))
datos<- datos[1:457,] #Eliminamos la ultima fila porque está en blanco
datos$Height <- gsub("-",".",datos$Height)
datos$Height <- as.numeric(datos$Height)
datos<- rename(datos,
Nombre = Name,
Equipo = Team,
Numero = Number,
Posicion = Position,
Edad = Age,
Altura = Height,
Peso = Weight,
Universidad = College,
Salario = Salary)
attach(datos)Se clasifican de la siguiente manera:
| Variable | Tipo | Escala de medición |
|---|---|---|
| Nombre | cualitativa | nominal |
| Equipo | cualitativa | nominal |
| Número | cualitativa | nominal |
| Posición | cualitativa | nominal |
| Edad | cuantitativa/discreta | intervalo |
| Altura | cuantitativa/continua | razón |
| Peso | cuantitativa/continua | razón |
| Universidad | cualitativa | nominal |
| Salario | cuantitativa/continua | razón |
Vamos a utilizar la variable College y realizaremos un análisis para saber de qué universidad hay más jugadores.
tabla_universidad <- as.data.frame(table(Universidad))
tabla_frec_universidad <- transform(tabla_universidad[with(tabla_universidad, order(-tabla_universidad$Freq)),],
FrecAq = cumsum(Freq),
Rel = round(prop.table(Freq), 3),
RelAc = round(cumsum(prop.table(Freq)), 3))
tabla_frec_universidad## Universidad Freq FrecAq Rel RelAc
## 1 84 84 0.184 0.184
## 47 Kentucky 22 106 0.048 0.232
## 28 Duke 20 126 0.044 0.276
## 45 Kansas 18 144 0.039 0.315
## 68 North Carolina 16 160 0.035 0.350
## 98 UCLA 15 175 0.033 0.383
## 3 Arizona 13 188 0.028 0.411
## 30 Florida 10 198 0.022 0.433
## 95 Texas 9 207 0.020 0.453
## 91 Syracuse 8 215 0.018 0.470
## 22 Connecticut 7 222 0.015 0.486
## 100 USC 7 229 0.015 0.501
## 109 Washington 7 236 0.015 0.516
## 33 Georgetown 6 242 0.013 0.530
## 36 Georgia Tech 6 248 0.013 0.543
## 53 LSU 6 254 0.013 0.556
## 59 Michigan 6 260 0.013 0.569
## 60 Michigan State 6 266 0.013 0.582
## 108 Wake Forest 6 272 0.013 0.595
## 54 Marquette 5 277 0.011 0.606
## 72 Ohio State 5 282 0.011 0.617
## 90 Stanford 5 287 0.011 0.628
## 117 Wisconsin 5 292 0.011 0.639
## 41 Indiana 4 296 0.009 0.648
## 74 Oklahoma State 4 300 0.009 0.656
## 93 Tennessee 4 304 0.009 0.665
## 99 UNLV 4 308 0.009 0.674
## 104 Villanova 4 312 0.009 0.683
## 2 Alabama 3 315 0.007 0.689
## 5 Arkansas 3 318 0.007 0.696
## 14 California 3 321 0.007 0.702
## 20 Colorado 3 324 0.007 0.709
## 23 Creighton 3 327 0.007 0.716
## 32 Fresno State 3 330 0.007 0.722
## 52 Louisville 3 333 0.007 0.729
## 56 Maryland 3 336 0.007 0.735
## 57 Memphis 3 339 0.007 0.742
## 62 Missouri 3 342 0.007 0.748
## 65 Nevada 3 345 0.007 0.755
## 69 North Carolina State 3 348 0.007 0.761
## 89 St. John's 3 351 0.007 0.768
## 96 Texas A&M 3 354 0.007 0.775
## 101 Utah 3 357 0.007 0.781
## 4 Arizona State 2 359 0.004 0.786
## 9 Boston College 2 361 0.004 0.790
## 13 Butler 2 363 0.004 0.794
## 17 Cincinnati 2 365 0.004 0.799
## 18 Clemson 2 367 0.004 0.803
## 25 Dayton 2 369 0.004 0.807
## 37 Gonzaga 2 371 0.004 0.812
## 40 Illinois 2 373 0.004 0.816
## 58 Miami (FL) 2 375 0.004 0.821
## 64 Murray State 2 377 0.004 0.825
## 66 New Mexico 2 379 0.004 0.829
## 71 Notre Dame 2 381 0.004 0.834
## 76 Oregon 2 383 0.004 0.838
## 77 Oregon State 2 385 0.004 0.842
## 79 Pittsburgh 2 387 0.004 0.847
## 81 Purdue 2 389 0.004 0.851
## 84 Saint Joseph's 2 391 0.004 0.856
## 86 Saint Mary's 2 393 0.004 0.860
## 97 UC Santa Barbara 2 395 0.004 0.864
## 103 Vanderbilt 2 397 0.004 0.869
## 105 Virginia 2 399 0.004 0.873
## 106 Virginia Commonwealth 2 401 0.004 0.877
## 110 Washington State 2 403 0.004 0.882
## 114 Western Kentucky 2 405 0.004 0.886
## 6 Baylor 1 406 0.002 0.888
## 7 Belmont 1 407 0.002 0.891
## 8 Blinn College 1 408 0.002 0.893
## 10 Boston University 1 409 0.002 0.895
## 11 Bowling Green 1 410 0.002 0.897
## 12 Bucknell 1 411 0.002 0.899
## 15 Central Michigan 1 412 0.002 0.902
## 16 Charleston 1 413 0.002 0.904
## 19 Cleveland State 1 414 0.002 0.906
## 21 Colorado State 1 415 0.002 0.908
## 24 Davidson 1 416 0.002 0.910
## 26 DePaul 1 417 0.002 0.912
## 27 Detroit 1 418 0.002 0.915
## 29 Eastern Washington 1 419 0.002 0.917
## 31 Florida State 1 420 0.002 0.919
## 34 Georgia 1 421 0.002 0.921
## 35 Georgia State 1 422 0.002 0.923
## 38 Harvard 1 423 0.002 0.926
## 39 Houston 1 424 0.002 0.928
## 42 Iowa 1 425 0.002 0.930
## 43 Iowa State 1 426 0.002 0.932
## 44 IUPUI 1 427 0.002 0.934
## 46 Kansas State 1 428 0.002 0.937
## 48 Lehigh 1 429 0.002 0.939
## 49 Long Beach State 1 430 0.002 0.941
## 50 Louisiana-Lafayette 1 431 0.002 0.943
## 51 Louisiana Tech 1 432 0.002 0.945
## 55 Marshall 1 433 0.002 0.947
## 61 Minnesota 1 434 0.002 0.950
## 63 Morehead State 1 435 0.002 0.952
## 67 Norfolk State 1 436 0.002 0.954
## 70 Northeastern 1 437 0.002 0.956
## 73 Oklahoma 1 438 0.002 0.958
## 75 Old Dominion 1 439 0.002 0.961
## 78 Penn State 1 440 0.002 0.963
## 80 Providence 1 441 0.002 0.965
## 82 Rhode Island 1 442 0.002 0.967
## 83 Rider 1 443 0.002 0.969
## 85 Saint Louis 1 444 0.002 0.972
## 87 San Diego State 1 445 0.002 0.974
## 88 St. Bonaventure 1 446 0.002 0.976
## 92 Temple 1 447 0.002 0.978
## 94 Tennessee State 1 448 0.002 0.980
## 102 Utah Valley 1 449 0.002 0.982
## 107 Virginia Tech 1 450 0.002 0.985
## 111 Weber State 1 451 0.002 0.987
## 112 Westchester CC 1 452 0.002 0.989
## 113 Western Carolina 1 453 0.002 0.991
## 115 Western Michigan 1 454 0.002 0.993
## 116 Wichita State 1 455 0.002 0.996
## 118 Wyoming 1 456 0.002 0.998
## 119 Xavier 1 457 0.002 1.000
Con la tabla de frecuencias observamos que Kentucky con 22 jugadores es la universidad que tiene más alumnos en la NBA, seguida de la universidad de Duke con 20 jugadores. Aunque hay 84jugadores que no pertenecen a ninguna universidad o no tienen una registrada, pero solo representan el 18% de todos los jugadores, entonces decimos que el 82% de jugadores, es decir 373 jugadores, pertenecen a alguna universidad. También podemos observar que la mayoría de universidades cuentan con máximo 2 jugadores de la NBA, son pocas las universidades privilegiadas de aportar varios estudiantes a la NBA.
Ahora vamos a realizar el mismo análisis para la variable de posiciones
tabla_posicion <- as.data.frame(table(Posicion))
tabla_posicion <- transform(tabla_posicion,
FrecAq = cumsum(Freq),
Rel = round(prop.table(Freq), 3),
RelAc = round(cumsum(prop.table(Freq)), 3))
total <- data.frame(
Posicion = as.factor("TOTAL"),
Freq = sum(tabla_posicion$Freq),
FrecAq = sum(tabla_posicion$Freq),
Rel = sum(tabla_posicion$Rel),
RelAc = sum(tabla_posicion$Rel)
)
total <- rbind(tabla_posicion,total)
total## Posicion Freq FrecAq Rel RelAc
## 1 C 78 78 0.171 0.171
## 2 PF 100 178 0.219 0.389
## 3 PG 92 270 0.201 0.591
## 4 SF 85 355 0.186 0.777
## 5 SG 102 457 0.223 1.000
## 6 TOTAL 457 457 1.000 1.000
Observamos que la posición en la que más jugadores se desempeñan es SG (Shooting Guard), mientras que la posición que menos jugadores tiene es C (Center o Pivot), lo cual tiene sentido ya que en esta posición las hibilidades más importantes son el peso y la fuerza y la mayoría de jugadores que vemos en la NBA tienden a ser delgados y ligeros para tener mayor agilidad, aunque no es mucha la diferencia de jugadores que hay en esta posición comparada con las otras posiciones.
universidad_plot <- plot_ly(tabla_posicion, labels = ~tabla_posicion$Posicion, values = tabla_posicion$Freq, type = 'pie')
universidad_plot <- universidad_plot %>% layout(title = 'Posiciones de los jugadores de la NBA')
universidad_plotAnálizando mediante una gráfica de pastel, podemos observar que se notan menos esas diferencias en la cantidad de jugadores para cada posición, ya que es muy baja como mencionamos anteriormente. La diferencia que hay entre la posición que tiene menos jugadores (C: 17%) y la que tiene más (SG: 22%) es del 5%, casi nada, por lo tanto podemos concluir que no hay diferencias estadísticamente significativas entre la cantidad de jugadores en cada una de las posiciones.
#Convertimos el tipo de variable Height de string a numérico para poder trabaja con ella.
tabla_altura <- as.data.frame(table(Altura)) #Frecuencias absolutas
tabla_altura <- transform(tabla_altura[with(tabla_altura, order(-tabla_altura$Freq)),],
FreqAc = cumsum(Freq),
FreqRel = round(prop.table(Freq), 3),
RelAc = round(cumsum(prop.table(Freq)), 3))
rbind(tabla_altura, c("", sum(tabla_altura$Freq),
tabla_altura$FreqAc[nrow(tabla_altura)],
sum(tabla_altura$FreqRel),tabla_altura$RelAc[nrow(tabla_altura)]))## Warning in `[<-.factor`(`*tmp*`, ri, value = ""): invalid factor level, NA
## generated
## Altura Freq FreqAc FreqRel RelAc
## 4 6.1 63 63 0.138 0.138
## 13 6.9 59 122 0.129 0.267
## 11 6.7 45 167 0.098 0.365
## 12 6.8 43 210 0.094 0.46
## 10 6.6 42 252 0.092 0.551
## 5 6.11 40 292 0.088 0.639
## 7 6.3 33 325 0.072 0.711
## 9 6.5 32 357 0.07 0.781
## 8 6.4 29 386 0.063 0.845
## 14 7 27 413 0.059 0.904
## 6 6.2 16 429 0.035 0.939
## 3 6 10 439 0.022 0.961
## 15 7.1 7 446 0.015 0.976
## 17 7.3 4 450 0.009 0.985
## 1 5.11 3 453 0.007 0.991
## 16 7.2 3 456 0.007 0.998
## 2 5.9 1 457 0.002 1
## 18 <NA> 457 457 1 1
Con base en la tabla anterior sabemos que la mayor cantidad de jugadores de la NBA tiene \(6.1\) pies de altura. Más exactamente el \(\%13.8\) del total de jugadores. Como el valor de la variable Height en el que se concentran más registros es único, podemos decir que la distibución es unimodal.
altura_plot <- plot_ly(x = Altura, type = "box",
boxpoints = "all", jitter = 0.3,
name = "Altura")
altura_plot <- altura_plot %>% layout(title = "Altura de los jugadores de la NBA", colorway = '#3d3b72')
altura_plotEn la gráfica anterior se pueden observar tres jugadores con una altura mínima de \(5.11\) pies, lo cual tiene mucho sentido ya que es bien sabido que la mayoría de los jugadores de basquetbol son altos y como prueba de ésto, se puede apreciar que la dispersión de puntos es simétrica a la derecha, es decir, la concetración de alturas está en valores elevados.Los cuatro jugadores más altos miden \(7.3\) pies.
Además, \(25\%\) de los jugadores miden a lo más \(6.11\) pies y el \(\%75\) llegan a medir hasta \(6.8\) pies
Para esta sección usaremos las variables estatura, peso y posición.
Comenzaré por explicar un poco sobre qué significado tienen las etiquetas de las posiciones y un poco sobre la función de los jugadores en esta posición. Existen 5 posiciones la cuales a su vez se dividen en: posiciones interiores y posiciones exteriores.*
Posiciones exteriores
1. Point Guard (PG): Su función es dirigir y controlar el ritmo del partido. Es quien tiene el control del juego dentro de la cancha. Tiene las siguientes carácterísticas: * Visión periférica. * Capacidad de moverser entre las zonas. * Agilidad en pies y manos para defender.
2. Shooting Guard (SG) :Tiene las mismas características que el PG pero suele ser más anotador.
3. Small Forward (SF) : Tiene las siguientes carácterísticas: * Rápido para el contraataque. * Habilidoso a la hora de pentrar en situaciones uno contra uno. * Rebotador. * Preción al tirar.
Posciones interiores
4. Power Forward (PF): Tienen la función de rebotear en ataque y defensa, suelen jugar desde espacios interiores de media distancia o distancias cercanas.
5. Center (C): Domina el uso de su cuerpo para ganar espacios en la cancha y juega cerca de aro.
En la siguiente imagen se muestra las posciones que ocupan en la cancha según su número
Ahora que tenemos una idea de qué significan las etiquetas de las posiciones y en qué lugar de la cancha se ubican, haremos un histograma sobre estas posicones.
Posicion_plot <- plot_ly(tabla_posicion,
x = ~Posicion,
y = ~Freq,
type = 'bar',
text = ~Freq,
color = ~Posicion)
Posicion_plot <- Posicion_plot %>%
layout(title = "Frecuencias de la posiciones",
xaxis = list(title = "Posición"),
yaxis = list(title = "Frecuencia"))
Posicion_plotSegún la gráfica de barras en las posiciones interiores (C y PF) tienen una diferencia notable entre la cantidad de jugadores,además la posición C es la que menos jugadores tiene y la posición PF es la segunda con más jugadores, haremos una prueba de proporsión para verificar esto.
tab_pos <- table(Posicion)
prop.test(x = c(tab_pos["C"],
tab_pos["PF"]),
n = c(400,400),
conf.level = 0.95)##
## 2-sample test for equality of proportions with continuity correction
##
## data: c(tab_pos["C"], tab_pos["PF"]) out of c(400, 400)
## X-squared = 3, df = 1, p-value = 0.07
## alternative hypothesis: two.sided
## 95 percent confidence interval:
## -0.11502 0.00502
## sample estimates:
## prop 1 prop 2
## 0.195 0.250
Conclusión: como \(\alpha\) = 0.05 < p-value, no se rechaza la hipótesis nula. Es decir que no hay evidencia estadística suficiente para decir que la proporción entre las posiciones interiores son diferentes.
grupos <- plot_ly(x=datos$Peso[Posicion=="C"], type="box", name = "C" )
grupos <- grupos %>% add_trace(x=datos$Peso[Posicion=="PF"], type="box", name = "PF" )
grupos <- grupos %>% add_trace(x=datos$Peso[Posicion=="PG"], type="box", name = "PG" )
grupos <- grupos %>% add_trace(x=datos$Peso[Posicion=="SF"], type="box", name = "SF" )
grupos <- grupos %>% add_trace(x=datos$Peso[Posicion=="SG"], type="box", name = "SG" )
grupos <- grupos %>% layout(title = "Posiciones según el peso de los jugadores")
gruposEn general se nota como las posiones interiores tienen a los jugadores de mayor peso y resalta la clase PG con los jugadores más ligeros,además ninguna de las clases tiene una distribución normal.
La clase SG tiene asimetría negativa y el brazo izquierdo más largo, esto indica que los jugadores en esta posición tienen un peso mayor a 209.5 libras y el resto aunque son menos tienden a ser notablemente más ligeros.
La clase SF tiene asimetría negativa y muy clara, en este caso el brazo más largo es el derecho aunque tiene un valor atípico en el lado inferior. La mayoría de los jugadores tienen un peso mayor a 225 libras y existen unos cuantos más delgados que el resto, incluso uno muy por debajo de los demás.
La clase PG tiene asimetría positiva y el brazo más largo es el izquierdo, es decir que la mayoría de los jugadores son muy delgados y solo unos tienen un peso mayor a 190 libras.
La clase PF tiene asimetría positiva, los brazos parecen tener el mismo tamaño y obsevamos un valor atípico en lado inferior, es decir varios jugadores en esta posición tienen un peso menor a 240 libras.
La clase C tiene asimetría positiva y los brazos tienen una magnitud similar aunque existe un jugador muy por encima del peso de los demás la mayoría tiene un peso menos a 250 libras.
Para finalizar podemos notar como los pesos van aumentando según la clase en el siguiente orden: PG, SG, SF, PF y C.
Hagamos una prueba de hipótesis para comparar las medianas de la clases PG y C, esto con el fin de corrobar que son diferentes.
wilcox.test(datos$Peso[Posicion=="PG"], datos$Peso[Posicion=="C"])##
## Wilcoxon rank sum test with continuity correction
##
## data: datos$Peso[Posicion == "PG"] and datos$Peso[Posicion == "C"]
## W = 1, p-value <2e-16
## alternative hypothesis: true location shift is not equal to 0
Conclusión: Se rechaza la hipótesis nula, lo que significa que si existe evidencia estadística de que la clase PG es más ligera que la clae C.